const deepClone=(params,has=new WeakMap())=>{
  //has 弱引用的目的是循环引用的时候，不用再次拷贝；
  if (params == null) {
    return params
  }
  if (params instanceof Date) {
    return new Date(params)
  }
  if (params instanceof RegExp) {
    return new RegExp(params)
  }
  if (typeof params!=="object") {
    return params;
  }
  const obj = new params.constructor();
  if (has.get(params)) {
    return has.get(params)
  }
  has.set(params,obj);
  for (let key in params){
    if (params.hasOwnProperty(key)) {
      obj[key] = deepClone(params[key],has);
    }
  }
  return obj;
}